package com.we.tickets.util;

import com.alibaba.fastjson.JSONObject;
import com.we.tickets.util.constants.Constant;

import java.util.List;

public class CommonUtil {
    /**
     * 返回一个info为空对象的成功消息的json
     */
    public static JSONObject successJson() {
        return successJson(new JSONObject());
    }

    /**
     * 返回一个成功消息的json
     */
    public static JSONObject successJson(Object info) {
        JSONObject resultJson = new JSONObject();
        resultJson.put("code", Constant.SUCCESS_CODE);
//        resultJson.put("msg", Constant.SUCCESS_MSG);
        resultJson.put("info", info);
        return resultJson;
    }

    /**
     * 返回错误信息JSON
     */
    public static JSONObject errorJson(String msg) {
        JSONObject resultJson = new JSONObject();
        resultJson.put("code", Constant.ERROR_CODE);
        resultJson.put("msg", msg);
        return resultJson;
    }

    /**
     * 分页查询之前的处理参数
     * 没有传pageRow参数时,默认每页10条.
     * @param paramObject    查询条件json
     */
    public static void fillPageParam(final JSONObject paramObject) {
        int defaultPageRow = 10; //默认的每页条数,即前端不传pageRow参数时的每页条数
        int pageNum = paramObject.getIntValue("pageNum");
        pageNum = pageNum == 0 ? 1 : pageNum;
        int pageRow = paramObject.getIntValue("pageRow");
        pageRow = pageRow == 0 ? defaultPageRow : pageRow;
        paramObject.put("offSet", (pageNum - 1) * pageRow);
        paramObject.put("pageRow", pageRow);
        paramObject.put("pageNum", pageNum);
//        删除此参数,防止前端传了这个参数,pageHelper分页插件检测到之后,拦截导致SQL错误
//        paramObject.remove("pageSize");
    }

    /**
     * 查询分页结果后的封装工具方法
     *
     * @param list        查询分页对象list
     * @param totalCount  查询出记录的总条数
     */
    public static JSONObject successPage(List<JSONObject> list, int totalCount) {
        JSONObject result = successJson();
        JSONObject info = new JSONObject();
        info.put("list", list);
        info.put("totalCount", totalCount);
        result.put("info", info);
        return result;
    }

    public static JSONObject successPage(List<JSONObject> list) {
        JSONObject result = successJson();
        JSONObject info = new JSONObject();
        info.put("list", list);
        result.put("info", info);
        return result;
    }

    public static <T> JSONObject successPage(T t) {
        JSONObject result = successJson();
        JSONObject info = new JSONObject();
        info.put("res", t);
        result.put("info", info);
        return result;
    }

    /**
     * 获取总页数
     *
     * @param pageRow   每页行数
     * @param itemCount 结果的总条数
     */
    private static int getPageCounts(int pageRow, int itemCount) {
        if (itemCount == 0) {
            return 1;
        }
        return itemCount % pageRow > 0 ?
                itemCount / pageRow + 1 :
                itemCount / pageRow;
    }
}
